Skip to content

ref(nav): use topbar slot for headeractions#112449

Merged
JonasBa merged 19 commits intomasterfrom
jb/ref/topbar-actions
Apr 10, 2026
Merged

ref(nav): use topbar slot for headeractions#112449
JonasBa merged 19 commits intomasterfrom
jb/ref/topbar-actions

Conversation

@JonasBa
Copy link
Copy Markdown
Member

@JonasBa JonasBa commented Apr 8, 2026

Migrates action buttons from Layout.HeaderActions (and inline styled equivalents) into the TopBar.Slot name="actions" slot across 28 views, so they render in the unified TopBar when the page frame feature flag is active.

Changes

  • Replaces Layout.HeaderActions / Layout.HeaderContent action patterns with <TopBar.Slot name="actions"> across 28 views
  • Removes size props from buttons inside the slot (they were previously needed to override defaults; now consistent with sm context)
  • Fixes the realtime toggle button in IssueViewsHeader which was missing size="sm" in the pageframe branch — explicit prop required until DE-1079 (Slot API context propagation) is resolved
  • Removes the now-executed migration plan doc

Fixes DE-1068

JonasBa and others added 7 commits April 8, 2026 06:24
Plan for migrating action buttons from Layout.HeaderActions (and styled
equivalents) into TopBar.Slot name="actions" when the page frame feature
flag is active. Covers 28 tasks across three patterns (actions-only,
actions+FeedbackButton, actions+FeedbackButton with custom options) plus
two component-level migrations (WorkflowEngineListLayout, DomainViewHeader)
that cover ~10 additional callers automatically.

Co-Authored-By: Claude <[email protected]>
When the page frame feature flag is active, move action buttons out of
Layout.HeaderActions (and styled equivalents) and into the TopBar via
the actions and feedback slots. This gives the TopBar ownership of
button placement in the new page frame layout.

Covers 28 sites across alerts, dashboards, discover, explore, insights,
performance, profiling, preprod, releases, replays, and issue views.
Component-level migrations in WorkflowEngineListLayout and
DomainViewHeader cover their downstream callers automatically.

Co-Authored-By: Claude <[email protected]>
Buttons inside TopBar.Slot name="actions" are wrapped by SizeProvider
in the TopBar, so explicit size props are redundant. Remove them from
the slot branch across all 15 affected files; the else branches (inside
Layout.HeaderActions) retain their size props unchanged.

Co-Authored-By: Claude <[email protected]>
The IssueViewsHeader uses a custom Flex justify="between" layout that
co-locates actions (realtime toggle, star, edit menu) with the title in
HeaderContent rather than in Layout.HeaderActions. When the page frame
feature is active, split the two concerns: title stays in HeaderContent,
actions move to TopBar.Slot name="actions".

Co-Authored-By: Claude <[email protected]>
…pageframe branch

Buttons in the TopBar slot already receive size via SizeProvider context. The
else branch should match the same prop-less style for consistency.
…ranch

The button relies on SizeProvider context from TopBar, but portal-based
slots don't propagate context from the outlet's vdom position. Add
explicit size prop to match IssueViewStarButton and IssueViewEditMenu
until DE-1079 is resolved.

Co-Authored-By: Claude Sonnet 4 <[email protected]>
Plan has been executed and is no longer needed.

Co-Authored-By: Claude Sonnet 4 <[email protected]>
@linear-code
Copy link
Copy Markdown

linear-code bot commented Apr 8, 2026

@github-actions github-actions bot added the Scope: Frontend Automatically applied to PRs that change frontend components label Apr 8, 2026
@JonasBa JonasBa changed the title ref(nav): Migrate Layout.HeaderActions to TopBar actions slot ref(nav): use topbar slot for headeractions Apr 8, 2026
The no-default-exports eslint rule flagged the default export introduced
in this file. Convert to a named export and update the import site.

Co-Authored-By: Claude Sonnet 4 <[email protected]>
@JonasBa JonasBa marked this pull request as ready for review April 8, 2026 08:20
@JonasBa JonasBa requested review from a team as code owners April 8, 2026 08:20
Resolve conflicts by keeping feedback button in TopBar.Slot name="feedback"
and actions in TopBar.Slot name="actions". Adopt helper consts introduced
in master (userFeedbackFeedbackOptions, logsFeedbackOptions, issueViewsFeedbackOptions,
buildDetailsFeedbackOptions) to reduce inline duplication. Also remove
duplicate hasPageFrameFeature declarations introduced during the merge in
feedbackListPage, issueViewsList, and buildDetailsHeaderContent.

Co-Authored-By: Claude Sonnet 4 <[email protected]>
createPortal does not propagate React context, so buttons inside
TopBar.Slot name="actions" do not inherit the SizeProvider size="sm"
wrapping the slot outlet. Add explicit size="sm" to all Button,
LinkButton, CreateAlertButton, StatusToggleButton, and NewMonitorButton
instances placed inside actions slots across affected views.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Two files had the hook called twice due to merge conflicts, causing
TS2451 redeclaration errors in the @typescript/native-preview CI check.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Copy link
Copy Markdown
Member

@natemoo-re natemoo-re left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good overall! We'll definitely need another consistency pass but this sets the foundation!

Copy link
Copy Markdown
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

There are 2 total unresolved issues (including 1 from previous review).

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 8eb4b4a. Configure here.

Adds `providers` option to `slots()` API so we can render providers that
are applied locally before calling `createPortal`.

As demonstrated in 1206923, this allows
us to do things like remove explicit `size` props that should be derived
from context where the slots are defined.
@JonasBa JonasBa merged commit 6b52064 into master Apr 10, 2026
65 checks passed
@JonasBa JonasBa deleted the jb/ref/topbar-actions branch April 10, 2026 04:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants